/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include <基本类型.h>
#include <vector>

#include "JIT_Def.h"


bool f_init_JTI();

bool f_close_JIT();



uint64 f_JIT_加载代码(std::string path, E_JIT方式 方式);
uint64 f_JIT_取函数指针(uint64 模块, std::string 函数名称, E_JIT方式 方式);
void f_JIT_运行(uint64 函数指针);
bool f_JIT_运行(uint64 执行引擎, std::string 函数名称, std::vector<E_JIT_FunParam>& 参数);
void f_JIT_销毁(uint64 执行引擎, E_JIT方式 方式);

void f_JIT_添加全局变量(const std::vector<std::string>& 全局变量名称, const std::vector<E_JIT_FunParam>& 函数指针);

uint64 f_JIT_创建代码块();

void f_JIT_编译代码(uint64 程序集KEY, std::wstring code);
void f_JIT_卸载程序(uint64 程序集KEY);



void f_JIT_get函数声明(uint64 程序集KEY, std::vector<S_类型名称>& 输入参数, std::vector<S_类型名称>& 输出参数);







































